In the field of computer science, a virtual machine (VM) is an abstraction—a virtualization—of an actual physical computer system. A virtual machine or guest is installed on a host platform, or simply host, which includes system hardware and one or more layers or co-resident components comprising system-level software, such as an operating system or similar kernel, or a virtual machine monitor or hypervisor, or some combination of these. Each VM will typically have both virtual system hardware and guest system software.
The state of a virtual machine can be encapsulated as a file or a set of files that is stored on a storage device or on a set of storage devices accessible by the host. The storage can be local or it can be a shared storage device in a centralized location, such as a storage area network (SAN) or a network attached storage (NAS).
A VM's virtual hardware typically includes at least one virtual disk—a virtual disk is a file or set of files that appears as a physical disk drive to a guest operating system. A virtual disk may be represented as a file or a set of files on a physical storage device. It may be necessary at times to perform maintenance on the storage device. Typically, to perform the maintenance, the storage device is powered down. Virtual machines whose virtual disks are stored as a file or a set of files on the storage device will therefore be unavailable for the duration of the maintenance.
One solution to this problem is to “cold” migrate the virtual machine disks to another storage device. However, the virtual machines still have to be powered down for at least the amount of time it takes to migrate the disks, which may be significant.
Another solution to this problem involves the use of storage replication technologies that generally provide block level replication of a storage device. Storage replication, also known as storage mirroring, allows virtual machines to switch transparently between primary and backup storage devices, without downtime if a proxy or redirector is used. However, the proxy or redirector is a single point of failure, and the replication must be configured in advance. Also, replication can be expensive and may not be suitable for all VMs.